/***********************************************************************
 * <copyright file="SqlServerDaoFactory.cs" company="BUCA JSC">
 * -->    Copyright (C) statement. All right reserved
 * </copyright>
 * 
 * Created:   Tuanhm
 * Email:    Tuanhm@humg@gmail.com
 * Website:
 * Create Date: Thursday, March 27, 2014
 * Usage: 
 * 
 * RevisionHistory: 
 * Date         Author               Description 
 * 
 * ************************************************************************/


using System;
using DataObjects.ADO.SqlServer.Dictionary;
using DataObjects.ADO.SqlServer.Report;
using DataObjects.ADO.SqlServer.Voucher;
using DataObjects.StandartInterfaces;
using DataObjects.StandartInterfaces.Dictionary;
using DataObjects.StandartInterfaces.Report;

namespace DataObjects.ADO.SqlServer
{
    /// <summary>
    /// Sql Server specific factory that creates Sql Server specific data access objects.
    /// </summary>
    /// <remarks>
    /// GoF Design Pattern: Factory.
    /// </remarks>
    public class SqlServerDaoFactory : IDaoFactory
    {
        #region Security

        #endregion

        #region Dictionary

        public IVoucherTypeDao VoucherTypeDao
        {
            get { return new SqlServerVoucherTypeDao(); }
        }

        public IRefTypeDao RefTypeDao
        {
            get { return new SqlServerRefTypeDao(); }
        }

        public IEmployTest EmployTest
        {
            get { return new SqlServerEmployTest(); }
        }



        //public IFixedAssetDao FixedAssetDao { get; private set; }


        public IAccountDao AccountDao
        {
            get { return new SqlServerAccountDao(); }
        }

        public IUnitDao UnitDao
        {
            get { return new SqlServerUnitDao(); }
        }

        public IStockDao StockDao
        {
            get { return new SqlServerStockDao(); }
        }

        public IVendorDao VendorDao
        {
            get { return new SqlServerVendorDao(); }
        }

        public IInventoryItemDao InventoryItemDao
        {
            get { return new SqlServerInventoryItemDao(); }
        }

        public IAutoBusinessDao AutoBusinessDao
        {
            get { return new SqlServerAutoBusinessDao(); }
        }

        public IAutoNumberDao AutoNumberDao
        {
            get { return new SqlServerAutoNumberDao(); }
        }

        public ICustomerDao CustomerDao
        {
            get { return new SqlServerCustomerDao(); }
        }

        public IDbOptionDao DbOptionDao
        {
            get { return new SqlServerDbOptionDao(); }
        }

        public IDepartmentDao DepartmentDao
        {
            get { return new SqlServerDepartment(); }
        }

        public IFixedAssetCategoryDao FixedAssetCategoryDao
        {
            get { return new SqlServerFixedAssetCategoryDao(); }
        }

        public IFixedAssetDao FixedAssetDao
        {
            get { return new SqlServerFixedAssetDao(); }
        }
        #endregion

        #region  Voucher

        public ITaxTransDao TaxTransDao
        {
            get { return new SqlServerTaxTransDao(); }
        }

        public IJournalEntryAccountDao JournalEntryAccountDao
        {
            get { return new SqlServerJournalEntryAccountDao(); }
        }

        public StandartInterfaces.IAccountBalanceDao AccountBalanceDao
        {
            get { return new SqlServerAccountBalanceDao(); }
        }

        public StandartInterfaces.Voucher.IItemTransactionDao ItemTransactionDao
        {
            get { return new SqlServerItemTransactionDao(); }
        }

        public StandartInterfaces.Voucher.IItemTransactionDetailDao ItemTransactionDetailDao
        {
            get { return  new SqlServerItemTransactionDetailDao();}
        }

        #endregion

        #region Report
        public IReportListDao ReportListDao { get { return new SqlServerReportList(); } }
        public IReportGroupDao ReportGroupDao { get { return new SqlServerReportGroupDao(); } }
        #endregion








        
    }
}
